/**
 * 系统菜单管理
 * @author rxliuli
 */
class SysMenu {
    static MenuTypeMenu = 1
    static MenuTypePermission = 2

    /**
     * 构造函数
     * @param {Object} [option] 可选参数
     * @param {Integer} [option.id] id
     * @param {String} [option.name] 名称
     * @param {String} [option.label] 标签，方便分配权限的时候使用
     * @param {Integer} [option.sort] 排序
     * @param {String} [option.link] 链接
     * @param {Integer} [option.isShow] 是否在菜单中显示， 1：显示，2：隐藏
     * @param {String} [option.permission] 权限标识
     * @param {Integer} [option.parentId] 父节点ID, 顶级菜单留空
     * @param {String} [option.parentPath] 父节点路径， 按逗号分隔
     * @param {String} [option.menuType] 权限的类型。1： 菜单，2：仅权限
     * @param {...Object} [option.args] 其他参数
     */
    constructor({
                    id,
                    name,
                    label,
                    sort,
                    link,
                    isShow,
                    permission,
                    parentId,
                    parentPath,
                    menuType,
                    ...args
                } = {}) {
        this.id = id
        this.name = name
        this.label = label
        this.sort = sort
        this.link = link
        this.isShow = isShow
        this.permission = permission
        this.parentId = parentId
        this.parentPath = parentPath
        this.menuType = menuType
        Object.assign(this, args)
    }
}